// entry-server.js
import { createApp } from './app'

export default async context => {
    // 因为有可能会是异步路由钩子函数或组件，所以我们将返回一个 Promise，
    // 以便服务器能够等待所有的内容在渲染前，
    // 就已经准备就绪。
    const { app, router,store } = createApp()
    const meta=app.$meta()

    // 设置服务器端 router 的位置
    router.push(context.url)

    context.meta=meta

    // 等到 router 将可能的异步组件和钩子函数解析完
    await new Promise(router.onReady.bind(router))
    context.rendered=()=>{
        // Renderer会把context.state数据对象内联到页面模板中
        // 最终发送给客户端的页面中会包含一段脚本：window.__INITIAL_STATE__ = context.state
        //客户端就要 把页面在中的window.__INITIAL_STATE__ 拿出来填充到客户端 store 容器中
        context.state=store.state
    }
    return app
}